package com.gxa.learning.pc.mapper;

import com.gxa.learning.core.pojo.User;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * @Author lijianmin
 * @date 2021/12/07 16:16:15
 **/
public interface UserMapper extends Mapper<User> {

    /**
     * 根据name模糊搜索得到数据(如果传递管理员 即获取所有管理员)
     *
     * @param name 模糊查询条件
     * @return 返回查询到的集合
     */
    List<Map<String, Object>> selectByMark(String name);

    /**
     * 根据手机号查询用户
     *
     * @param phone 手机号
     * @return 用户
     */
    User selectByPhone(String phone);

    /**
     * 获取全部学员信息
     *
     * @param map
     * @return
     */
    List<Map<String, Object>> getList(Map<String, Object> map);

    /**
     * 查询对应用户所有培训项目列表
     *
     * @param userId        培训人id
     * @param type          培训项目类型
     * @param projectStatus 培训项目状态 0表示未开始、1表示进行中
     * @param projectName   培训项目名称
     * @return 列表
     */
    List<Map<String, Object>> getUserProjectList(String userId, String projectName, String type, String projectStatus);

    /**
     * 查询项目所有课程
     *
     * @param projectId 项目编号 没有时查询当前用户全部课程
     * @param userId    用户编号
     * @return 列表
     */
    List<Map<String, Object>> getCourseList(String projectId, String userId);

    /**
     * 获取推荐课程
     *
     * @param set
     * @return
     */
    List<Map> getRecommend(@Param("set") Set<Long> set);

    /**
     * 获取单个推荐培训的详细信息
     *
     * @param id
     * @return
     */
    Map selectDetailRecommend(Long id);

    /**
     * 获取单个评价的分数
     *
     * @param id
     * @return
     */
    Map getCount(Long id);

    /**
     * 获取单个推荐课程的分数
     *
     * @param id
     * @return
     */
    Map getCourseCount(Long id);


    /**
     * 获取培训项目下的所有课程
     *
     * @param id
     * @return
     */
    List<Map> getCourseInRecommend(Long id);


    /**
     * 获取我的课程(带有搜索功能)
     *
     * @param map
     * @return
     */
    List<Map> getMyCourse(Map map);

    /**
     * 根据id获取单个用户
     *
     * @param id
     * @return
     */
    Map<String, Object> getOne(Long id);

}
